// 模拟线程阻塞
setInterval(() => {
    for (let i = 0; i < 100000000; i++) {}
}, 0)
// 定义全局变量 
let lastTime = 10000, // 总时间
    interval = 1000, // 时间间隔
    startTime = +new Date(), // 开始时间
    timeCount = 0, // 经过时间计数器
    countDownTimer // 倒计时定时器
if (lastTime > 0) {
    countDownTimer = setTimeout(countDownRun, interval)
}
// 保证的是每次执行时间间隔为1秒
function countDownRun() {
    console.log(lastTime)
    timeCount++ // 计数器加1
    const timeOffset = +new Date() - startTime - timeCount * interval // 时间误差
    let nextRunTime = interval - timeOffset // 下一次执行时间
    lastTime -= interval // 总时间减1秒
    if (lastTime >= 0) {
        console.log(`lastTime:${lastTime/1000} timeOffset:${timeOffset}ms nextRunTime:${nextRunTime}ms后`)
        countDownTimer = setTimeout(countDownRun, nextRunTime)
    } else {
        console.log(`Over!`)
        clearTimeout(countDownTimer)
    }
}